home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.rock; import com.extensibility.util.HashVector; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.Point; import java.beans.PropertyChangeListener; import java.util.Vector; import javax.swing.AbstractAction; import javax.swing.AbstractButton; import javax.swing.Action; import javax.swing.Icon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComponent; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JRadioButtonMenuItem; import javax.swing.event.EventListenerList; import javax.swing.event.MenuEvent; public class BaseMenu extends RJMenu implements RMenuListener, MenuItemContainer { public static Font font; EventListenerList rlistenerList = new EventListenerList(); MenuEvent menuEvent = new MenuEvent(this); HashVector rlistenerRegistry = new HashVector(); public static void setDefaultFont(Font var0) { font = var0; } public void menuAppearing(MenuEvent var1) { } public void remove(int var1) { JMenuItem var2 = ((RJMenu)this).getItem(var1); super.remove(var1); if (var2 != null) { this.removeRMenuListeners(var2); } } public void remove(Component var1) { super.remove(var1); if (var1 instanceof JMenuItem) { this.removeRMenuListeners((JMenuItem)var1); } } public void remove(JMenuItem var1) { super.remove(var1); this.removeRMenuListeners(var1); } public void removeAll() { while(((RJMenu)this).getMenuComponentCount() > 0) { this.remove(0); } } public void addRMenuListener(RMenuListener var1, JMenuItem var2) { this.rlistenerList.add(Class.forName("com.extensibility.rock.RMenuListener"), var1); this.rlistenerRegistry.put(var2, var1); } public void removeRMenuListener(RMenuListener var1, JMenuItem var2) { this.rlistenerList.remove(Class.forName("com.extensibility.rock.RMenuListener"), var1); this.rlistenerRegistry.remove(var2, var1); } public void removeRMenuListeners(JMenuItem var1) { Vector var2 = this.rlistenerRegistry.getVector(var1); if (var2 != null) { for(int var3 = 0; var3 < var2.size(); ++var3) { this.rlistenerList.remove(Class.forName("com.extensibility.rock.RMenuListener"), (RMenuListener)var2.elementAt(var3)); } } this.rlistenerRegistry.remove(var1); } public BaseMenu(String var1) { super(var1); if (font != null) { ((JComponent)this).setFont(font); } } public JCheckBoxMenuItem addAsCheckBox(RAction var1) { JCheckBoxMenuItem var2 = new JCheckBoxMenuItem((String)((AbstractAction)var1).getValue("Name"), (Icon)((AbstractAction)var1).getValue("SmallIcon")); this.addAsSelectable(var2, var1); return var2; } public JRadioButtonMenuItem addAsRadioBtn(RAction var1) { JRadioButtonMenuItem var2 = new JRadioButtonMenuItem((String)((AbstractAction)var1).getValue("Name"), (Icon)((AbstractAction)var1).getValue("SmallIcon")); this.addAsSelectable(var2, var1); return var2; } private void addAsSelectable(JMenuItem var1, RAction var2) { ((AbstractButton)var1).setHorizontalTextPosition(4); ((AbstractButton)var1).setVerticalTextPosition(0); var1.setEnabled(((AbstractAction)var2).isEnabled()); if (var2.getSelected()) { ((AbstractButton)var1).setSelected(true); } ((AbstractButton)var1).addActionListener(var2); this.add(var1); PropertyChangeListener var3 = this.createActionChangeListener(var1); ((AbstractAction)var2).addPropertyChangeListener(var3); this.addRMenuListener(var2, var1); } public JMenuItem add(RAction var1) { return super.add(var1); } public JMenuItem add(JMenuItem var1) { if (font != null) { ((JComponent)var1).setFont(((Component)this).getFont()); } return super.add(var1); } public JMenuItem add(BaseMenu var1) { JMenuItem var2 = super.add(var1); this.addRMenuListener(var1, var2); return var2; } public JMenuItem insert(Action var1, int var2) { JMenuItem var3 = super.insert(var1, var2); if (font != null) { ((JComponent)var3).setFont(((Component)this).getFont()); } return var3; } public void addSeparator() { ((RJMenu)this).add(new RSeparator()); } public void setPopupMenuVisible(boolean var1) { if (((Component)this).isEnabled()) { boolean var2 = ((RJMenu)this).isPopupMenuVisible(); if (var1 != var2) { ((RJMenu)this).isPopupMenuVisible(); if (var1 && ((Component)this).isShowing()) { this.fireMenuAppearing(); Point var3 = this.getPopupMenuOrigin(); ((RJMenu)this).getPopupMenu().show(this, var3.x, var3.y); } else { ((RJMenu)this).getPopupMenu().setVisible(false); } } } } protected Point getPopupMenuOrigin() { int var1 = 0; int var2 = 0; JPopupMenu var3 = ((RJMenu)this).getPopupMenu(); Dimension var4 = Screen.getScreenSize(); Point var5 = Screen.getScreenTopLeft(); Dimension var6 = ((Component)this).getSize(); Dimension var7 = ((Component)var3).getSize(); if (var7.width == 0) { var7 = ((JComponent)var3).getPreferredSize(); } Point var8 = ((Component)this).getLocationOnScreen(); Container var9 = ((Component)this).getParent(); if (var9 instanceof JPopupMenu) { if (var8.x - var5.x + var6.width + var7.width < var4.width) { var1 = var6.width; } else { var1 = 0 - var7.width; } int var10 = var8.y - var5.y + var7.height - (var4.height - 2); if (var10 <= 0) { var2 = 0; } else { var2 = 0 - var10; } } else { if (var8.x - var5.x + var7.width < var4.width) { var1 = 0; } else { var1 = var6.width - var7.width; } int var13 = var8.y - var5.y + var6.height + var7.height - (var4.height - 2); if (var13 <= 0) { var2 = var6.height; } else { var2 = var6.height - var13; } } return new Point(var1, var2); } protected PropertyChangeListener createActionChangeListener(JMenuItem var1) { return new MyActionChangedListener(var1); } protected void fireMenuAppearing() { Object[] var1 = this.rlistenerList.getListenerList(); for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) { if (var1[var2] == Class.forName("com.extensibility.rock.RMenuListener")) { if (var1[var2 + 1] == null) { throw new Error(String.valueOf(String.valueOf(((AbstractButton)this).getText()).concat(String.valueOf(" has a NULL Listener!! "))).concat(String.valueOf(var2))); } if (var1[var2 + 1] instanceof RMenuListener) { MenuEvent var3 = new MenuEvent(this); ((RMenuListener)var1[var2 + 1]).menuAppearing(var3); } } } } }